package com.briup.ptt.exception;

/**
 * @author 杰瑞
 * @date 2025/8/18
 */

import com.briup.ptt.util.Result;
import com.briup.ptt.util.ResultUtil;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import static com.briup.ptt.util.ResultCodeEnum.SEVER_ERROR;

/**
 * 全局异常处理器：
 * 将web层所有方法的try catch语句封装到当前类中
 */
// ControllerAdvice+@ResponseBody
@RestControllerAdvice//异常通知  异常增强
public class GlobalExceptionHandler {

    //捕获所有类型的异常
    @ExceptionHandler
    public Result handleException(Exception ex){
        //打印异常：方便调试
        ex.printStackTrace();
        //当service,dao层抛出异常，捕获异常，响应错误的提示信息
        if(ex instanceof CustomException){
            return ResultUtil.error(ex.getMessage());
        }
        //当异常是非业务异常，不希望用户看到，统一提示一个内部错误异常
        return ResultUtil.error(SEVER_ERROR);
    }

    //可以定义多个方法处理异常的不同逻辑

}
